自定义报表 内容 概述 FSG报表 自有视图报表 自定义视图报表 打印格式 概述 iDempiere的报表引擎把报表分为2部分:数据(Model)和报表视图(Report View)。 对于同样的数据,你可以使用不同的报表视图(不是报表格式),比如:你可以使用发票数据去创建一个日报和一个月报,你可以使用不同的列,不同的排序和不同的汇总方式,但是数据都是一样。 用户的数据访问权限同样作用于报表,比如:用户A没有访问发票的数据,那他也无法查看发票报表。因为安全规则是基于数据元的。 报表的设计步骤: 1. 设计报表草稿 2. 定义科目来源 3. 定义数据来源 4. 定义数据关系及计算公式 5. 修改报表布局或者格式 参考: Enhanced financial reports extension for Adempiere https://idempiere.atlassian.net/browse/IDEMPIERE-196 Advanced Financial Reports - smartjsp https://groups.google.com/d/msg/idempiere/TyfLouMILo8/JeMMhT17EuEJ 账套汇总 https://groups.google.com/d/msg/idempiere/0f9iD8tYbVI/7thex7udAQAJ 系统管理员进 本节内容包含AD数据字典和Sql技术,不当操作会影响系统安全。 FSG报表 FSG财务报表生成器(Financial Statement Generator)可以: 1. 自定义账户 2. 自定义维度 3. 自定义公式 优点: 1. 系统自带 2. 可计算字段 3. 可取余额 4. 取值记录可导出编辑 缺点: 1. 计算功能不足 2. 取值功能不足 3. 格式化较差 > 如果只是取**科目余额**的简单计算,只使用FSG就可以完全满足要求。 系统自带的3大报表就是FSG报表,自定义步骤如下: 1. 定义报表行:定义内容,金额类型,记账类型,期间类型,计算公式 2. 定义报表列:同报表行。 3. 新增用户报表,设置报表行,报表列 4. 设置报表维度集(Report Cube) 5. 运行“生成报表” 6. 选择需要的维度,必须选择一个“报表层次树(Reporting Hierarchy)” 注意:The List Transaction flag in Financial Reports is not filtering the transactions. This is, if you select "List Transactions" flag in this example, the report will include all transactions of all organizations, not just the organizations from the hierarchy. ####报表行和报表列#### 1. 报表行:和费用相关,和成本相关等 2. 报表列: - 标准三栏式:期初,发生,期末 - 数量金额式:数量,金额 - 财务控制类:预算、实际、差异 ####加快报表计算#### - 缩小报表数据范围,使用Combination数据类型 - 使用报表维度集(Report Cube)预先计算 - 使用报表层次树(Reporting Hierarchy)进行数据分组 - 进一步缩小数据范围 - 提交计算运算到后台JOB ####报表维度集(Report Cube)#### 如果预先计算能够使报表计算的数据量减少到5%,那将是非常可观的。 期间是一个很重要的统计分组方法。另外,用户也不会总是全维度统计,使用Report cube(报表维度集)可以缩小数据范围从而减少分录的计算。 注意:Report Cube可以选择不同的会计日历,iDempiere的多日历报表由此产生。 ####报表层次树(Reporting Hierarchy)#### iDempiere支持维度的层次树组合,比如不同的组织层次。 使用Reporting Hierarchy可以在不同维度,不同层次组合出各种需求的报表。 比如:你可以做一个只有3种产品的新树(Tree),或者2个商业伙伴的新树(Tree),或者复杂的集团公司层次。通过报表层次树组合,可以得到更具体需求的报表。 http://wiki.adempiere.net/HOWTO_Hierarchies FSG界面 数据源类型:combination可以进一步缩小数据范围 数据不准? 所有数据来源历史业务的数据。如果改变相关维度的层次,则无法同步到历史数据。 自有视图报表 1. 系统管理员登录 2. 新建一个视图(Report View)记录,来源可是是iDempiere自有表、视图或者自写SQL生成的Report View 3. 新建一个报表(Process & Report),指定上述视图。 4. 新建一个menu记录,并在Tree Maintain中维护其位置。 5. 参考:http://wiki.idempiere.org/en/Report_View 自定义视图报表 > 视图是数据库中面向应用的对象,多个逻辑表的联合会导致性能的下降,特别是大数据场景。更多请参考[系统优化](http://idempiere_guide_fi.mydoc.io?v=${version}&t=79864) 1. 使用PostgreSQL的客户端pgAdmin III(注意数据对象的所有者),或者【System Admin】-【General Rules】-【SQL Process】(只支持DDL操作) 2. SQL Process DDL (PostgreSQL版本) - CREATE - to create objects in the database 创建 - ALTER - alters the structure of the database 修改 - DROP - delete objects from the database 删除 - TRUNCATE - remove all records from a table, including all spaces allocated for the records are removed 删除记录 - COMMENT - add comments to the data dictionary 注释 - GRANT - gives user's access privileges to database 授权 - REVOKE - withdraw access privileges given with the GRANT command 收回已经授予的权限 3. 创建视图 > CREATE [TEMP | TEMPORARY] VIEW view_name AS > SELECT column1, column2..... > FROM table_name > WHERE [condition]; > 尽量包含额外的字段,最后再用where和order。 4. 删除视图 > DROP VIEW view_name; 5. 修改视图 ,由于alter view无法新增列,用Replace View来重新查询,语法同Create View。 > 注意:尽量避免使用字段的别名。如果非要用,请使用小写字符且不能包含空格。 6. 命名:数据字典条目="rv_yourquery" ,用户自定义条目= "yyy_rv_yourquery",yyy为Client_id 7. 【数据字典】-【表和字段】,新建一个表记录指向这个视图,名称同视图名称。 8. 点击“从数据库创建字段”,系统将拷贝视图的字段到AD数据字典中。 9. 新建一个视图(Report View)记录,来源可是是iDempiere自有表、视图或者自写SQL生成的Report View 10. 新建一个报表(Process & Report),指定上述视图。 11. 新建一个menu记录,并在Tree Maintain中维护其位置。 12. 可选:同步术语【Synchronize Terminology】,确保你在菜单中使用的报表名和参数(来源于System Element)。 13. 可选:角色访问更新【Role Access Update】,手动维护的角色需要在【Role】-[Process Access]中增加该报表记录。 XXXXXXXXXXXX待确认XXXXXXXXXXXXXXXXXXX 如果自定义报表打印了全部数据,而不是你当前窗口的数据,你需要: 1. 视图中包含AD_Pinstance_ID字段。 2. 修改你的Report View名称,比如 t\_YourTableViewName_v。 系统默认对 t_* 加入AD_Pinstance_ID条件进行数据过滤,你就可以看到当前窗口数据了。 打印格式 1. 菜单【System Admin】-【General Rules】-【Print】 2. 常见的设置包括:打印纸,打印颜色,打印字体等不解释。 3. 【Print Table Format】打印报表外观格式,表头,LOGO设置等,如下图。(默认打印表格式需要使用系统管理员修改) 4. 【Print Format】打印格式:所有自带报表的打印相关设置,比如指定外观文件Print Table Forma,字段显示,字段顺序,字段对齐等。 关键选项: 1. 基于表:Table based List Reporting,只对单表视图有效,如果表头/子表嵌套,自动为空,无法编辑。 2. 窗体:表头的打印格式必须是窗体,而不是列表项,否则明细列表项将无法正常显示。而明细项不能是窗体。 3. 按页汇总Running Total:可以指定行数汇总,并在页头和页尾打印每页累计汇总金额。 4. 汇总行数Running Total Rows:指定每页汇总的行数。 Prefix string too short 新建了报表格式,报表名字的中文翻译字数不宜过短(2汉字不行),否则报prefix string too short 错误。 直接打印 1. ZK直接打印,http://online.odoerfer.com/OdKatalog/tree.zul#pi_30238 2. 静默打印 http://wiki.idempiere.org/en/Silent_print 打印格式自定义 打印表格式 样式1 报表参考 - base/src org.compiere.print.ReportEngine.java - client/src org.compiere.apps.APanel.java org.compiere.print.AReport.java org.compiere.print.CPaper.java org.compiere.print.LayoutEngine.java org.compiere.print.ReportCtl.java org.compiere.print.ReportViewerProvider.java org.compiere.print.SwingViewerProvider.java org.compiere.print.Viewer.java